﻿#ifndef DATABASECENTER_H
#define DATABASECENTER_H

#include <QObject>
#include <QMutex>
#include <QQueue>
#include "qdatabasepool.h"

class DatabaseCenter : public QObject {
    Q_OBJECT
public:
    /**
    * 获取单例实例
    * @return 返回单例实例
    */
    static DatabaseCenter* getInstance();
    /**
    * 删除单例实例
    */
    static void deleteInstance();

    /**
     * 获取一个数据库连接
     * @return 返回一个有效的数据库连接，如果没有可用连接则返回无效连接
     */
    QSqlDatabase getConnection();

    /**
     * 释放一个数据库连接回连接池
     * @param connection 要释放的数据库连接
     */
    void releaseConnection(QSqlDatabase &connection);

private:
    DatabaseCenter(QObject *parent = nullptr);
    ~DatabaseCenter();

    static DatabaseCenter* instance;
    static QMutex mutex;

    QSettings *databasePoolSettings;
    QDatabasePool *databasePool;
};

#endif // DATABASECENTER_H
